home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / comms / recomm10.arj / COMMFNC.C < prev    next >
C/C++ Source or Header  |  1993-10-22  |  15KB  |  746 lines

  1. #define DLL_MAIN    
  2.  
  3. #include "re_comm.h"
  4. #include <stdlib.h>
  5.  
  6. #define INICOM     1
  7. #define SETCOM     2
  8. #define SETQUE     3
  9. #define RECCOM     4
  10. #define SNDCOM     5
  11. #define CTX        6
  12. #define TRMCOM    7
  13. #define STACOM    8
  14. #define CEXTFCN 9
  15. #define CFLUSH    10
  16. #define CEVT     11
  17. #define CEVTGET 12
  18. #define CSETBRK 13
  19. #define CCLRBRK 14
  20. #define GETDCB  15
  21. #define CWSTRING 16
  22. #define CRSTRING 17
  23. #define ENABLENOTI 18
  24.  
  25. DCB dcb;
  26. HINSTANCE hUser;
  27.  
  28.  
  29.  
  30. int event = 0;
  31. int huge * lpevent;
  32.  
  33. int sendData();
  34. char debug[60];
  35. BOOL REMOTE_RUNNING = FALSE;
  36.  
  37. HWND hNoti = NULL;
  38.  
  39. HWND     (FAR PASCAL * lpFindWindow)(LPSTR, LPSTR);
  40. int      (FAR PASCAL * lpMessageBox)(HWND, LPSTR, LPSTR, UINT);
  41. void     (FAR PASCAL * lpPostQuitMessage)(int);
  42. LRESULT (FAR PASCAL * lpSendMessage)(HWND, UINT, WPARAM, LPARAM);    
  43. long    (FAR PASCAL * lpGetTickCount)();
  44.  
  45. LPSTR numtoA(int x)
  46. {
  47.     static char zahl[] = "0123456789";
  48.     static char num[20];
  49.     int y;
  50.     
  51.     _fmemcpy(num, "                 \n\n\0", 20);
  52.     y = 10;
  53.     
  54.     while(x > 0)
  55.     {
  56.         num[y--] =     zahl[x % 10];
  57.         x /= 10;
  58.     }   
  59.     return(num);  
  60. }    
  61.  
  62. int far pascal inicom(DCB far * lpdcb)
  63. {
  64.     WORD (far pascal * lpfn)(DCB far * lpdcb);
  65.     
  66.     if(lpdcb->Id == REMOTE_COM)
  67.     {    
  68.         comData.fnc = INICOM;
  69.         
  70.         _fmemcpy(&comData.a.dcb, lpdcb, sizeof(comData.a.dcb));
  71.         
  72.         if(sendData() == FALSE) return IE_HARDWARE;
  73.         
  74.         _fmemcpy(lpdcb, &comData.a.dcb, sizeof(comData.a.dcb));
  75.         
  76.         return(LOWORD(comData.rc));
  77.     }
  78.     
  79.     if(hCm > HINSTANCE_ERROR)
  80.     {
  81.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(1, 0));
  82.         if((FARPROC)lpfn != (FARPROC)NULL)
  83.         {
  84.             return (*lpfn)(lpdcb);
  85.         }
  86.     }                   
  87.     return IE_HARDWARE;    
  88. }
  89. int far pascal setcom(DCB far * lpdcb)
  90. {    
  91.     WORD (far pascal * lpfn)(DCB far * lpdcb);
  92.     
  93.     if(lpdcb->Id == REMOTE_COM)
  94.     {    
  95.         comData.fnc = SETCOM;
  96.         
  97.         _fmemcpy(&comData.a.dcb, lpdcb, sizeof(comData.a.dcb));
  98.         
  99.         if(sendData() == FALSE) return IE_HARDWARE;
  100.         
  101.         _fmemcpy(lpdcb, &comData.a.dcb, sizeof(comData.a.dcb));
  102.         
  103.         return(LOWORD(comData.rc));
  104.     }
  105.     if(hCm > HINSTANCE_ERROR)
  106.     {
  107.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(2, 0));
  108.         if((FARPROC)lpfn != (FARPROC)NULL)
  109.         {
  110.             return (*lpfn)(lpdcb);
  111.         }
  112.     }
  113.     return IE_HARDWARE;    
  114. }
  115. int far pascal setque(int cid, QDB FAR * lpqdb )
  116. {
  117.     int (far pascal * lpfn)(int cid, QDB FAR * lpqdb );
  118.     
  119.     if(cid == REMOTE_COM)
  120.     {    
  121.         comData.fnc = SETQUE;
  122.         
  123.         _fmemcpy(&comData.a.qdb, lpqdb, sizeof(comData.a.qdb));
  124.         
  125.         if(sendData() == FALSE) return IE_BADID;
  126.         
  127.         _fmemcpy(lpqdb, &comData.a.qdb, sizeof(comData.a.qdb));
  128.         
  129.         return(LOWORD(comData.rc));
  130.     }
  131.     
  132.     if(hCm > HINSTANCE_ERROR)
  133.     {
  134.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(3, 0));
  135.         if((FARPROC)lpfn != (FARPROC)NULL)
  136.         {
  137.             return (*lpfn)(cid, lpqdb );
  138.         }
  139.     }
  140.     return IE_BADID;    
  141. }
  142. int far pascal reccom(int cid)
  143. {
  144.     int (far pascal * lpfn)(int cid);
  145.     
  146.     if(cid == REMOTE_COM)
  147.     {    
  148.         comData.fnc = RECCOM;
  149.         
  150.         if(sendData() == FALSE) return -1;
  151.         
  152.         return (comData.a.x);
  153.     }
  154.     if(hCm > HINSTANCE_ERROR)
  155.     {
  156.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(4, 0));
  157.         if((FARPROC)lpfn != (FARPROC)NULL)
  158.         {
  159.             return (*lpfn)(cid);
  160.         }
  161.     }
  162.     return -1;    
  163. }
  164. int far pascal sndcom(int cid, int ch)
  165. {
  166.     WORD (far pascal * lpfn)(int cid, int ch);
  167.     
  168.     if(cid == REMOTE_COM)
  169.     {    
  170.         comData.fnc = SNDCOM;
  171.         comData.a.x = ch;
  172.         if(sendData() == FALSE) return -1;
  173.         
  174.         return(LOWORD(comData.rc));
  175.     }
  176.     
  177.     if(hCm > HINSTANCE_ERROR)
  178.     {
  179.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(5, 0));
  180.         if((FARPROC)lpfn != (FARPROC)NULL)
  181.         {
  182.             return (*lpfn)(cid, ch);
  183.         }
  184.     }
  185.     return -1;    
  186. }
  187. WORD far pascal ctx(int cid, int ch)
  188. {    WORD (far pascal * lpfn)(int cid, int ch);
  189.  
  190.     if(cid == REMOTE_COM)
  191.     {    
  192.         comData.fnc = CTX;
  193.         comData.a.x = ch;
  194.         if(sendData() == FALSE) return 0x8000;
  195.         
  196.         return(LOWORD(comData.rc));
  197.     }
  198.     
  199.     if(hCm > HINSTANCE_ERROR)
  200.     {
  201.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(6, 0));
  202.         if((FARPROC)lpfn != (FARPROC)NULL)
  203.         {
  204.             return (*lpfn)(cid, ch);
  205.         }
  206.     }
  207.     return 0x8000;    
  208. }
  209.  
  210. int far pascal trmcom(int cid)
  211. {
  212.     int (far pascal * lpfn)(int cid);
  213.     int rc;
  214.     
  215.     if(cid == REMOTE_COM)
  216.     {    
  217.         comData.fnc = TRMCOM;
  218.         
  219.         if(sendData() == FALSE) return 0x8000;
  220.         
  221.         return (LOWORD(comData.rc));
  222.     }
  223.     
  224.     rc = 0x8000;
  225.     
  226.     if(hCm > HINSTANCE_ERROR)
  227.     {
  228.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(7, 0));
  229.         if((FARPROC)lpfn != (FARPROC)NULL)
  230.         {
  231.             rc = (*lpfn)(cid);
  232.         }
  233.     }
  234.     return rc;    
  235.     
  236. }
  237. WORD far pascal stacom(int cid, COMSTAT FAR * cs)
  238. {
  239.     WORD (far pascal * lpfn)(int cid, COMSTAT FAR * cs);
  240.     
  241.     if(cid == REMOTE_COM)
  242.     {    
  243.         comData.fnc = STACOM;
  244.                       
  245.         if(cs != (COMSTAT FAR *)NULL)
  246.         {                      
  247.             _fmemcpy(&comData.a.cs, cs, sizeof(comData.a.cs));
  248.         }
  249.         
  250.         if(sendData() == FALSE) 
  251.         {
  252.             return CE_FRAME | CE_MODE | CE_BREAK;
  253.         }
  254.         
  255.         if(cs != (COMSTAT FAR *)NULL)
  256.         {                      
  257.             _fmemcpy(cs, &comData.a.cs, sizeof(comData.a.cs));
  258.         }
  259.         return(LOWORD(comData.rc));
  260.     }
  261.     
  262.     if(hCm > HINSTANCE_ERROR)
  263.     {   
  264.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(8, 0));
  265.         if((FARPROC)lpfn != (FARPROC)NULL)
  266.         {   
  267.             return (*lpfn)(cid, cs);
  268.         }
  269.     }   
  270.     return CE_IOE;    
  271.     
  272. }
  273. LONG far pascal cextfcn(int cid, int fcn)
  274. {    LONG (far pascal * lpfn)(int cid, int fcn);
  275.     
  276.     int maxcom;                    
  277.     
  278.     comData.fnc = CEXTFCN;
  279.     
  280.     lpfn = NULL;
  281.     if(hCm > HINSTANCE_ERROR)
  282.     {
  283.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(9, 0));
  284.     }
  285.     switch(fcn)
  286.     {
  287.         case GETBASEIRQ:
  288.             if(cid == REMOTE_COM) 
  289.             {    
  290.                 return 0L;
  291.             }
  292.             break;
  293.         case GETMAXCOM:
  294.                 
  295.                 if((FARPROC)lpfn != (FARPROC)NULL)
  296.                 {
  297.                     maxcom = LOWORD((*lpfn)(cid, fcn));
  298.                     return(max(maxcom, REMOTE_COM));
  299.                 }
  300.                 break; 
  301.     }           
  302.     lpfn = NULL;
  303.     
  304.     if(cid == REMOTE_COM)
  305.     {                           
  306.         comData.a.x = fcn;
  307.         if(sendData() == FALSE) return -1;
  308.         return(comData.rc);
  309.     }
  310.     if((FARPROC)lpfn != (FARPROC)NULL)
  311.     {
  312.         return (*lpfn)(cid, fcn);
  313.     }
  314.     return -1;    
  315. }
  316. WORD far pascal cflush(int cid, int q)
  317. {    WORD (far pascal * lpfn)(int cid, int q);
  318.  
  319.     if(cid == REMOTE_COM)
  320.     {    
  321.         comData.fnc = CFLUSH;
  322.         comData.a.x = q;
  323.         if(sendData() == FALSE) return 0x8000;
  324.         
  325.         return(LOWORD(comData.rc));
  326.     }
  327.     
  328.     if(hCm > HINSTANCE_ERROR)
  329.     {
  330.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(10, 0));
  331.         if((FARPROC)lpfn != (FARPROC)NULL)
  332.         {
  333.             return (*lpfn)(cid, q);
  334.         }
  335.     }
  336.     return 0x8000;    
  337. }
  338. LPWORD far pascal cevt(int cid, int evtmask)
  339. {    LPWORD (far pascal * lpfn)(int cid, int evtmask);
  340.             
  341.     event = 0;
  342.  
  343.     if(cid == REMOTE_COM)
  344.     {    
  345.         comData.fnc = CEVT;
  346.         comData.a.x = evtmask;
  347.         sendData();
  348.         
  349.         if(comData.rc == 0) 
  350.         {   
  351.             // return 0;     
  352.         }
  353.         return (&event);
  354.     }
  355.     
  356.     if(hCm > HINSTANCE_ERROR)
  357.     {
  358.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(11, 0));
  359.         if((FARPROC)lpfn != (FARPROC)NULL)
  360.         {          
  361.             return (*lpfn)(cid, evtmask);
  362.         }
  363.     }
  364.     return (&event);
  365. }
  366. WORD  far pascal cevtGet(int cid, int evtmask)
  367. {    WORD (far pascal * lpfn)(int cid, int evtmask);
  368.     
  369.     
  370.     if(cid == REMOTE_COM)
  371.     {    
  372.         comData.fnc = CEVTGET;
  373.         comData.a.x = evtmask;
  374.         if(sendData() == FALSE) 
  375.         {
  376.             return EV_ERR;
  377.         }
  378.         
  379.         return(LOWORD(comData.rc));
  380.     }
  381.     
  382.     if(hCm > HINSTANCE_ERROR)
  383.     {
  384.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(12, 0));
  385.         if((FARPROC)lpfn != (FARPROC)NULL)
  386.         {
  387.             return (*lpfn)(cid, evtmask);
  388.         }
  389.     }
  390.     return EV_ERR;    
  391. }
  392. int far pascal csetbrk(int cid)
  393. {    int (far pascal * lpfn)(int cid);
  394.     
  395.     if(cid == REMOTE_COM)
  396.     {    
  397.         comData.fnc = CSETBRK;
  398.         if(sendData() == FALSE) return -1;
  399.         return(LOWORD(comData.rc));
  400.     }
  401.     
  402.     if(hCm > HINSTANCE_ERROR)
  403.     {
  404.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(12+1, 0));
  405.         if((FARPROC)lpfn != (FARPROC)NULL)
  406.         {
  407.             return (*lpfn)(cid);
  408.         }
  409.     }
  410.     return -1;    
  411. }
  412. int far pascal cclrbrk(int cid)
  413. {    int (far pascal * lpfn)(int cid);
  414.     
  415.     if(cid == REMOTE_COM)
  416.     {    
  417.         comData.fnc = CCLRBRK;
  418.         if(sendData() == FALSE) return -1;
  419.         return(LOWORD(comData.rc));
  420.     }
  421.     
  422.     if(hCm > HINSTANCE_ERROR)
  423.     {
  424.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(14, 0));
  425.         if((FARPROC)lpfn != (FARPROC)NULL)
  426.         {
  427.             return (*lpfn)(cid);
  428.         }
  429.     }
  430.     return -1;    
  431. }
  432. DCB far * far pascal getdcb(int cid)
  433. {    DCB far * (far pascal * lpfn)(int cid);
  434.     
  435.     if(cid == REMOTE_COM)
  436.     {    
  437.         comData.fnc = GETDCB;
  438.         if(sendData() == FALSE) return NULL;
  439.         
  440.         _fmemcpy(&dcb, &comData.a.dcb, sizeof(dcb));
  441.         
  442.         return(&dcb);
  443.     }
  444.     
  445.     if(hCm > HINSTANCE_ERROR)
  446.     {
  447.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(15, 0));
  448.         if((FARPROC)lpfn != (FARPROC)NULL)
  449.         {
  450.             return (*lpfn)(cid);
  451.         }
  452.     }
  453.     return NULL;    
  454. }   
  455. int far pascal CommWriteString(int cid, LPSTR pbbuf, int size)
  456. {    int (far pascal * lpfn)(int cid, LPSTR pbbuf, int size);
  457.     
  458.     int x;        
  459.     
  460.     if(cid == REMOTE_COM)
  461.     {    
  462.         x = 0;
  463.         
  464.         while(x < size)
  465.         {    
  466.             comData.fnc = CWSTRING;
  467.             comData.len = min(sizeof(comData.a.txt), size -x);
  468.             _fmemcpy(comData.a.txt, pbbuf+x, comData.len);
  469.             
  470.             x += comData.len;
  471.             
  472.             if(sendData() == FALSE) return -1;
  473.         }
  474.         return(x);
  475.     }
  476.     if(hCm > HINSTANCE_ERROR)
  477.     {
  478.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(19, 0));
  479.         if((FARPROC)lpfn != (FARPROC)NULL)
  480.         {
  481.             return (*lpfn)(cid, pbbuf, size);
  482.         }
  483.     }
  484.     return NULL;    
  485. }   
  486. int far pascal ReadCommString(int cid, LPSTR pbbuf, int size)
  487. {    int (far pascal * lpfn)(int cid, LPSTR pbbuf, int size);
  488.     int x;                   
  489.     
  490.     if(cid == REMOTE_COM)
  491.     {    
  492.         x = 0;
  493.         
  494.         while(x < size)
  495.         {    
  496.             comData.fnc = CRSTRING;
  497.             comData.len = min(sizeof(comData.a.txt), size -x);
  498.             
  499.             if(sendData() == FALSE) return -1;
  500.             
  501.             if(comData.rc == 0) break; // no more Data
  502.             
  503.             _fmemcpy(pbbuf+x, comData.a.txt, comData.len);
  504.             
  505.             x += comData.len;
  506.         }
  507.         return(x);
  508.     }
  509.     
  510.     if(hCm > HINSTANCE_ERROR)
  511.     {
  512.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(20, 0));
  513.         if((FARPROC)lpfn != (FARPROC)NULL)
  514.         {
  515.             return (*lpfn)(cid, pbbuf, size);
  516.         }
  517.     }
  518.     return NULL;    
  519. }   
  520. int far pascal EnableNotification(int cid, HWND hwnd, WORD wInTrigger, WORD wOutTrigger)
  521. {    int (far pascal * lpfn)(int cid, HWND hwnd, WORD wInTrigger, WORD wOutTrigger);
  522.  
  523.     hNoti = hwnd;
  524.     
  525.     if(cid == REMOTE_COM)
  526.     {
  527.         comData.fnc = ENABLENOTI;
  528.         comData.a.noti.hwnd = hwnd;
  529.         comData.a.noti.inTrig = wInTrigger;
  530.         comData.a.noti.outTrig = wOutTrigger;
  531.         
  532.         if(sendData() == FALSE) return NULL;
  533.         
  534.         return(LOWORD(comData.rc));
  535.     }
  536.     
  537.     if(hCm > HINSTANCE_ERROR)
  538.     {
  539.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(100, 0));
  540.         if((FARPROC)lpfn != (FARPROC)NULL)
  541.         {
  542.             return (*lpfn)(cid, hwnd, wInTrigger, wOutTrigger);
  543.         }
  544.     }
  545.     return NULL;    
  546. }   
  547. void far pascal ReactivateOpenCommPorts(void)
  548. {
  549.     void (far pascal * lpfn)(void);
  550.     
  551.     if(hCm > HINSTANCE_ERROR)
  552.     {
  553.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(18, 0));
  554.         if((FARPROC)lpfn != (FARPROC)NULL)
  555.         {
  556.             (*lpfn)();
  557.         }
  558.     }
  559. }
  560. void far pascal SuspendOpenCommPorts(void)
  561. {
  562.     void (far pascal * lpfn)(void);
  563.     
  564.     if(hCm > HINSTANCE_ERROR)
  565.     {
  566.         (FARPROC)lpfn = (FARPROC)GetProcAddress(hCm, (LPSTR)MAKELONG(17, 0));
  567.         if((FARPROC)lpfn != (FARPROC)NULL)
  568.         {
  569.             (*lpfn)();
  570.         }
  571.     }
  572. }   
  573.  
  574. void getFunctions()
  575. {
  576.     static BOOL INIT = FALSE;
  577.     
  578.     if(INIT == FALSE)
  579.     {                  
  580.         hUser = LoadLibrary("USER.EXE");
  581.         
  582.         (FARPROC)lpFindWindow = (FARPROC)GetProcAddress(hUser, "FINDWINDOW");
  583.         (FARPROC)lpMessageBox = (FARPROC)GetProcAddress(hUser, "MESSAGEBOX");
  584.         (FARPROC)lpPostQuitMessage = (FARPROC)GetProcAddress(hUser, "PostQuitMessage");
  585.         (FARPROC)lpSendMessage = (FARPROC)GetProcAddress(hUser, "SENDMESSAGE");    
  586.         (FARPROC)lpGetTickCount   = (FARPROC)GetProcAddress(hUser, "GETTICKCOUNT");    
  587.         FreeLibrary(hUser);
  588.         INIT = TRUE;
  589.     }    
  590. }
  591. WaitForReCommNet()
  592. {
  593.     long x;
  594.     
  595.     x = lpGetTickCount();
  596.     
  597.     while((x - lpGetTickCount()) < 3600000) // 3 minuten
  598.     {
  599.         if(REMOTE_RUNNING == TRUE) return TRUE;
  600.         Yield();
  601.     }   
  602.     return FALSE;
  603. }       
  604. //---------------------------------------------------------------------------------------
  605. sendData()
  606. {    
  607.     static int errcnt = 0;
  608.     static HINSTANCE hNet = NULL;
  609.     static int (FAR PASCAL * lpInitRecomNet)();
  610.     static int (FAR PASCAL * lpReCommCmd)     (struct recComData far * lpComData);
  611.               
  612.     getFunctions();               
  613.     
  614.     if(REMOTE_RUNNING == FALSE)
  615.     {                
  616.         
  617.         if(comData.fnc == TRMCOM)
  618.         {    comData.rc = 0;
  619.             return TRUE;
  620.         }
  621.         
  622.         if( (comData.fnc == INICOM)
  623.         ||  (comData.fnc == SETQUE))
  624.         {
  625.             hNet = LoadLibrary("recomnet.dll");
  626.             
  627.             if(hNet <= HINSTANCE_ERROR)
  628.             {
  629.                 // OutputDebugString("COMM.DRV: could'nt load recomnet.dll");
  630.                 // OutputDebugString(numtoA(hNet));                
  631.                 FatalAppExit(0, "RECOMM.DLL (COMM.DRV) RECOMNET.DLL nicht gefunden");
  632.                 return FALSE;
  633.             }
  634.             errcnt = 0;
  635.             
  636.             (FARPROC)lpReCommCmd = (FARPROC)GetProcAddress(hNet, "RECOMMCMD");        
  637.         
  638.             if( (FARPROC)lpReCommCmd == (FARPROC)NULL) 
  639.             {
  640.                 // OutputDebugString("COMM.DRV: could'nt  find INITRECOMNET/RECOMMCMD\n");
  641.                 FatalAppExit(0, "RECOMM.DLL (COMM.DRV) Falsche RECOMNET.DLL");
  642.                 FreeLibrary(hNet);
  643.                 hNet = NULL;
  644.                 return FALSE;
  645.             }
  646.         }else
  647.         {
  648.             return FALSE;
  649.         }
  650.         
  651.     }   
  652.     if( (comData.fnc == INICOM)
  653.     ||  (comData.fnc == SETQUE))
  654.     {
  655.         errcnt = 0;
  656.     }    
  657.     if(lpReCommCmd(&comData) == FALSE)
  658.     {
  659.         event = EV_ERR;
  660.         if(hNoti != NULL) 
  661.         {    lpSendMessage(hNoti, WM_CLOSE, 0, 0L);
  662.         }
  663.         return FALSE;
  664.     }           
  665.     event = comData.evmask;
  666.     
  667.     if( (comData.fnc == TRMCOM)
  668.     &&  (hNet > HINSTANCE_ERROR))
  669.     {    
  670.         FreeLibrary(hNet);
  671.         hNet = NULL;
  672.         REMOTE_RUNNING = FALSE;    
  673.     }
  674.     return TRUE;
  675. }       
  676.  
  677. #ifdef CLIENT_EXE
  678.         
  679. sendData()
  680. {    
  681.     HWND hCl;
  682.     static int errcnt = 0;
  683.               
  684.     getFunctions();               
  685.     
  686.     hCl = lpFindWindow("RE_COM_CTRL", NULL);
  687.     
  688.     if(hCl == NULL)
  689.     {                
  690.         REMOTE_RUNNING = FALSE;    
  691.         
  692.         if(comData.fnc == TRMCOM)
  693.         {    comData.rc = 0;
  694.             return TRUE;
  695.         }
  696.         
  697.         if( (comData.fnc == INICOM)
  698.         ||  (comData.fnc == SETQUE))
  699.         {
  700.             WinExec("MODEMCL.EXE", SW_SHOWMINIMIZED);
  701.             
  702.             errcnt = 0;
  703.         
  704.             if(WaitForModemCL() == FALSE) 
  705.             {
  706.                 if(hNoti != NULL) lpSendMessage(hNoti, WM_CLOSE, 0, 0L);
  707.                 return FALSE;
  708.             }
  709.             hCl = lpFindWindow("RE_COM_CTRL", NULL);
  710.         
  711.             if(hCl == NULL)
  712.             {   if(hNoti != NULL) lpSendMessage(hNoti, WM_CLOSE, 0, 0L);
  713.                 return FALSE;
  714.             }                
  715.         }else
  716.         {
  717.             return FALSE;
  718.         }
  719.     }
  720.     if(lpSendMessage(hCl, WM_COMMAND, 666, (LPARAM)(LPSTR)&comData) == FALSE)
  721.     {
  722.         event = EV_ERR;
  723.         if(hNoti != NULL) 
  724.         {    lpSendMessage(hNoti, WM_CLOSE, 0, 0L);
  725.         }else
  726.         {                 
  727.             if(errcnt++ > 100)
  728.             {   
  729.                 lpPostQuitMessage(2); // jetzt reichts aber !
  730.                 errcnt = 0;
  731.             }
  732.         }            
  733.         return FALSE;
  734.     }           
  735.     event = comData.evmask;
  736.     
  737.     return TRUE;
  738. }
  739. #endif
  740.  
  741. void FAR PASCAL setRemoteRunning(int evmask)
  742. {
  743.     REMOTE_RUNNING = TRUE;
  744.     event = evmask; // Set by Client Timer
  745. }
  746.